// praxis/hardware/iactuator.h
#pragma once

#include <praxis/praxis_export.h>

#include <string>

namespace praxis {
class PRAXIS_API IActuator {
 public:
  virtual ~IActuator() = default;

  // Gets the unique name of the actuator (e.g., "Heater").
  virtual const std::string& GetName() const = 0;

  // Gets the current value of the actuator (e.g., current power %).
  virtual double GetCurrentValue() const = 0;

  // Sets the desired target value (e.g., set heater power to 50%).
  virtual void SetTarget(double target) = 0;

  // Called periodically to update the actuator's state.
  // (e.g., smoothly ramp towards the target value).
  virtual void Update() = 0;
};
}  // namespace praxis
